海洋论坛▏基于UE4引擎的海洋虚拟可视化初探
“数字海洋”作为“数字地球”的核心理念,为了实现对多变量海洋数据的综合性、多角度、分层次的访问分析,通过使用卫星、飞机、探测船、遥感、海体传感器等技术手段把海洋各类基础信息(物理、化学、生物、地质等) 进行实时性、持续性地数据采集加工,最终加载成为一个“超级系统”,科学地整合成为人类开发和保护海洋的虚拟可视化模型。
虚拟现实(Virtual Reality,VR)和可视化(Visualization)在近年来的海洋信息技术中得到飞速发展,作为反映海洋现状最有效的工具之一,虚拟海洋技术的应用尤为引人瞩目。 作为新兴科技热点,三维虚拟现实技术有着强大的技术优势与广泛的应用前景: 通过人机交互,虚拟三维可视化技术动态实现了海洋大环境中各类要素的生动展示,在大数据的支撑下以其独特的沉浸感、想象力和交互性等特性,帮助海洋科研工作者在海洋环境模拟与海洋生命仿真中提供更直观的全方位观察角度,并提供更多有价值的海洋资源立体信息。
为融合海洋虚拟现实与可视化渲染引擎的无限可能,探索海洋环境的三维虚拟仿真,实现将海洋数据动态环境可视化,通过对3A引擎Unreal Engine 4(UE4)的开发使用,真实再现海洋多样性形态变化并结合数值运算结果来分析海洋运动的规律,这对于海洋科研领域具有重要研究价值和现实意义。
一、材料与方法
⒈ 海洋虚拟现实与渲染引擎使用现状
针对海洋科研领域实际需求,伴随着大数据采集和探测遥感应用的飞速发展,虚拟现实与可视化研究的关键技术在海洋领域愈加广泛的应用,近年来为数众多的国内外研发团队争相涉足投入,其中不乏国际巨擘,如美国的Google Earth,NASA的World Wind,国内的“数字海洋”原型系统、EV-Globe等。提供真实、可靠、快速、立体的海洋环境场景的虚拟现实搭载并通过可视化的形式展示分析海洋数据已经作为一种直观而且有效的手段逐步为人们所接受。
经过二十多年的研究与发展,基于Open GL和Direct X等硬件底层图形库来实现的各类三维渲染引擎已经在游戏、医疗、工业、建筑、生物等领域得到广泛的应用。各种框架结构更为成熟、功能趋于完善的商业引擎以其独特的三维渲染引擎技术越来越被政府、企业、开发从业人员、科研学者及其他爱好者们所熟悉、喜爱。另外由于部分引擎开源,极具参考价值的代码更推动了整个产业技术的发展进步与水平提高。
基于三维图形渲染引擎的开发共识与应用远景,国外游戏软件公司以及几所顶尖学府均投入了大量的人力物力,取得了显著的成果。在这些商业引擎的推动下,三维图形渲染技术得到了迅猛的发展。三维图形渲染引擎广泛研究已应用于国外众多科研院所,如美国北卡罗来纳大学计算机系和麻省理工学院为其翘楚,前者是现代虚拟现实技术研究最早最著名的大学,后者则在计算机图形学、人工智能算法、动画仿真技术等领域首屈一指。
UE4是Epic Game公司于2014年3月20日推出的商业开发引擎,相比同样级别的3A级引擎,UE4不仅包含提供各类工具与资源,并开放了源代码,甚至能够通过GitHub进行远程工作室合作开发,由上至下提供了一个完整的生态系统。UE4基于C﹢﹢进行开发,可以运行于Windows、Linux、Mac OS等不同桌面操作系统,Xbox One、PS4等游戏平台,以及Apple IOS、Android等移动便携平台。通过各种渠道进行封装发布将应用的范围涵盖到了游戏、3D电影、房地产、工业制造、医疗卫生、国防军事、公众事业等各个专业领域。
⒉ 系统设计
基于UE4三维渲染引擎实现的海洋虚拟现实功能模块,通过虚拟技术带来的独特现实沉浸感、拓展想象力和人机交互性,将海洋数据动态环境模拟的可视化和在海洋生命仿真中显示出的强大技术优势都具有不可估量的价值。概念图如图1所示。
图1 概念图
⑴系统描述本系统主要设计以下几个关键层次: 基础数据层、可视化驱动层和应用实现层。基础数据层主要通过对基础地理信息数据、地表地形植被数据、ARCGIS数据、独立应用数据、3Dmax等三维模型数据等多类基础数据进行采集预处理,构建可视化系统的基础背景场模型;可视化驱动层主要通过UE4三维渲染引擎为用户提供一个实时渲染显示的、动态三维可交互的立体环境,将原本抽象的海面潮流数据、水质监测数据、海底地形数据、卫星云图、气候气象等数字数据形象化;应用实现层基于可视化驱动引擎,根据用户的具体应用需求,将海洋环境要素在三维虚拟模型下实现交互式漫游、动态计算与加载、多视角动态浏览、交互式查询等功能。层次结构如图2所示。
图2 系统体系结构
⑵框架描述海洋由于自身结构规模的庞大、主动与被动行为的复杂、没有确定的运动轨迹等特点,使其在众多自然场景模拟中,具有较大的难度和挑战性。本研究在海平面网格建模方面,仅以厦门海洋环境监测站附近区域海面5km范围为核心,以常规海洋观测内容为视角,通过基本潮流等监测数据为基础提出了一种简便快捷的三维模拟输出。由于UE4引擎具有优秀的实时延迟渲染能力(llvm与热加载),并且可以很方便的实现功能扩展。针对当前的发展现状,从渲染引擎入手的核心设计主框架主要是场景管理和事件处理两大模块,其中包括数据的存储与调取、场景建设与组织、底层硬件图形库OpenGL函数的加载与封装以及渲染流程的标准与结构模块化等。渲染引擎的核心部件如图3所示。
图3 渲染引擎的核心部件
二、结果与讨论
⒈ 模型导入
系统主要模拟了厦门海洋环境监测站附近5km范围海域的潮流,设计与重现了相关的水文气象场,并采用海面光照交互技术对海面光照进行处理,将日出日落、天气情况等环境变量虚拟再现。并针对海洋科研领域中的实际需要,模拟了海水赤潮、海底地形测绘等专门面向业务需求的三维实时渲染。UE4三维引擎支持基本的fbx等文件的读写和格式转换,通过3Dmax、Maya等制作的模型组可以很方便的导入。并在模型导入前设置好碰撞体、材质区分及1UV2UV等,导入效果如图4所示。
由于本模型在3Dmax中创建,运用了vray插件做UV效果,而UE4不支持vray直接打包导入,因此在导模中提前预留UV通道进行材质球的二次添加
图4 模型导入效果
⒉ 模型导入
UE4三维引擎支持的世界地图流缓冲技术,使用世界组合(World Composition) 这个功能的设计可以简化对大地图的管理。世界组合依赖于世界原始的转移特性,当通过使用基于距离的Level流,允许创建出不局限于引擎中设定好的世界最大值WORLD_MAX constant这个常量。
在制作过程中通过UE4引擎对DEM数据可视化实现地貌晕染的基本过程. 为了描述区域地貌形态的空间分布,通过采集一定范围内规则格网点的平面坐标(X,Y)及其高程( Z)的数据集合,采样和量测了等高线或相似立体模型的数据集合,结合二者后再进行数据内插计算而形成。对地貌形态的虚拟表示,还可以派生出等高线、坡度图等原未采集的信息,并实现与其他如园林绿化、路政建设等新元素数据进行融合叠加。地貌晕染效果如图5所示。
a为宏观俯视视角,b为细节设计视角
图5 地貌晕染
⒊ 海浪模型设计
作为海浪模拟的基础,海浪建模的设计水平成为决定海浪模拟效果优劣与否的标准. 常用的海浪建模方法主要有: 基于动力模型、基于几何造型、基于海浪谱和基于粒子系统等4种。
基于动力模型的海浪建模方法由于需要求解大量的非线性方程,很难实时地模拟海浪。基于几何造型的建模方法仅仅为了追求形状上的相似,需要人为地设置波的属性参数,人工痕迹明显,真实感不强。基于海浪谱的建模方法是指采用适当的海浪谱反演方法模拟海浪,通常采用线性迭加法,缺点是真实感较弱。传统基于粒子系统的方法也存在较大问题,如果粒子模型构造简单、粒子数量太少,无法表现出海水的质感与真实; 如果构造的粒子模型复杂、粒子数量过多,则计算量又太大,难以实时进行渲染实现。而UE4提供的M_OceanWater 粒子系统从根本上跨过初始模型的构造,并通过缓冲技术与热加载降低了计算难度。与常规基于视点的多分辨率网格划分结构对海面进行绘制的三维技术对比,从粒子级别可以更自由的控制展示的宏观区域与潮流细节。从图6中可以看到,基于UE4引擎的粒子系统,无论是M_OceanWater粒子或是其他材质粒子选项与细节选项,都有超过4000种变量可以设置,并通过引擎接口可以修改HLSL代码,程序员使用C + +编程进行修改。为表现赤潮环境下的水色,对基础M_OceanWater粒子的颜色、形态、深度等变量进行微调,如图7所示。最终可以显示在水面上形成赤潮区域的效果。
图6 海浪粒子模型1
图7 海浪粒子模型2
以往的三维海浪展示由于缺乏专业粒子系统,在计算机完成建模后,还需要考虑用光照模型和消隐处理算法在物体表面加入阴影、颜色、纹理、亮度等表面属性。由于UE4从粒子系统根本上已经完成了这项最为复杂的工作,对海浪模型进行实时渲染即可得到海浪的可视化结果。为了进一步仿真,在三维基础上再引入时间轴作为第四维度,动态显示和更新海浪场的预报数据。根据时间轴的变换,系统读取每小时甚至每分钟潮位站、浮标或雷达等所采集的实时数据,动态加载到海面网点的平面坐标(X,Y)及其高程(Z),并根据采集的数据进行内插等计算方式,实时修正粒子的参数来模拟潮汐与潮流在海平面上的再现。
图8所示表现了不同环境、不同时间点海平面的实际表现,图8a为近岸水深2.0m、浪高0.2m的1级海况下海平面,图8b为离岸水深10.0 m、浪高2.0m的4级海况下的海平面。
a为近岸,b为离岸
图8 不同环境下的海平面
⒋ 光照及水深地形
UE4的实时光照系统是通过实时GI实现的,Sparse Voxel Octree GlobalⅢumination (SVOGI)相比Light Propagation Volume(LPV)最明显的优势是精度更高,并能够实现高频率的间接光照。如海面的高光能够反射出水面的颜色、软粒子的光照与投射阴影可以提供在天气特效如雾气作用中海面的朦胧特点,光照效果如图9所示。GPU粒子在游戏及3D电影领域虽然不是很新鲜的技术,但集成到UE4引擎中,可以通过海底地形向量场与GPU粒子交互作用展现更真实的场景。海底地形如图10所示。
本图为水面
图9 日光效果
图10 海底地形
⒌ 打包输出
UE4提供了跨平台的输出格式,可以运行于Windows、Linux、Mac OS等不同桌面操作系统,XboxOne、PS4等游戏平台,以及Apple IOS、Android等移动便携平台。通过对Oculus VR、Linux、Valve's Steamworks、Steam Box、Apple Store 和Android AppStore等各种渠道进行封装发布,或是通过HTML5将产品发布到网页浏览器中。
值得注意的是,由于手机ARM架构不同于PC或主机的X86主流架构,在编译之前需要对编译器进行额外处理,如根据手机芯片类型,进行纹理格式输出等。
三、结论
⑴本系统主要研究利用了UE4引擎及相关蓝图、粒子系统开发构建的一个小型三维海洋虚拟现实场景模型,并在此模型基础上对海洋环境数据产品进行展示。初步实现对现有海浪、水深、水质、海底地形等基础数据的整合,进行了模型与近岸海洋环境的搭配,为用户提供一个直观、动态、可交互的可视化浏览系统,并为以后深入研究更大的海洋环境观测场构建一个基础背景。
⑵通过专业三维渲染引擎可以大大降低系统开发难度,节省为实现动态加载各项海洋管理数据的资源消耗。在本系统开发实践中发现这种三维可视化应用不仅可以发挥在可视化展示上,还可以完善不足的数据分析,如地形地貌形态特征、时间轴变化曲线规律等,可以为管理者的决策提供有利的科学依据。
⑶系统目前有待进一步完善,存在的不足例如海洋环境数据主要是靠导入观测数据,或已有的海洋产品数据,可升级为直接从引擎接口上读取原始数据,并行处理后动态加载在三维粒子上实时显示;另外风、云等环境效果只做了简单的处理,可引入各类UE4插件,如风特效SpeedTree、体积云的蓝图粒子能够为系统提供更为逼真的虚拟效果。而在对海洋环境实时状况的模拟中,在目前已有的技术条件下,比较难于真实且动态推演海洋环境的实时状况,如海洋工程建设、海底地貌地形变动与潮流场、沉积学相互演化关系将导致系统所展示的三维可视化信息无法及时、客观地反映海洋开发利用中的最新变化。
【作者简介】第一作者余肖翰,1982年出生,男,工程师,国家海洋局厦门海洋环境监测中心站;本文来自《应用海洋学学报》(2017年第2期),参考文献略,用于学习与交流,版权归出版社与作者共同拥有。
相关阅读推荐
公众号
溪流之海洋人生
微信号▏xiliu92899
用专业精神创造价值
用人文关怀引发共鸣
您的关注就是我们前行的动力
投稿邮箱▏452218808@qq.com